﻿

Public Class Modificar_Profesional
    Inherits System.Web.UI.Page
    Private Function TraeTipoDeEspecialidadxEspec(ByVal Especialidad As String) As String

        Dim Rs As ADODB.Recordset
        Dim param(0) As ADODB.Parameter


        param(0) = New ADODB.Parameter
        param(0).Name = "@Especialidad"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = Especialidad
        param(0).Size = 50


        Rs = Datos.TraerTodos("traeTipodeEspecialidadxEspecialidad", param, "TraeTipoDeEspecialidadxEspec-de modificacionDeMatriculados")


        Rs.MoveFirst()
        TraeTipoDeEspecialidadxEspec = Rs.Fields(0).Value.ToString





    End Function


    Private Function TraeObservacionDematricula(ByVal matricula As String) As String
        Dim Rs As ADODB.Recordset
        Dim param(0) As ADODB.Parameter


        param(0) = New ADODB.Parameter
        param(0).Name = "@Matricula"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = matricula
        param(0).Size = 50


        Rs = Datos.TraerTodos("traeObservacionDeMatricula", param, "TraeObservacionDematricula-de modificacionDeMatriculados")


        If Rs.RecordCount > 0 Then
            Rs.MoveFirst()
            TraeObservacionDematricula = Rs.Fields(0).Value.ToString
        Else
            TraeObservacionDematricula = ""
        End If



    End Function

    Private Function RealizaModificacion() As Boolean
        Dim param(7) As ADODB.Parameter


        param(0) = New ADODB.Parameter
        param(0).Name = "@MatriculaVieja"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = lblMatriculaSeleccionada.Text
        param(0).Size = 50



        param(1) = New ADODB.Parameter
        param(1).Name = "@MatriculaNueva"
        param(1).Type = ADODB.DataTypeEnum.adVarChar
        param(1).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(1).Value = TxtnumMAtricula.Text
        param(1).Size = 50


        param(2) = New ADODB.Parameter
        param(2).Name = "@TipoMAtricula"
        param(2).Type = ADODB.DataTypeEnum.adVarChar
        param(2).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(2).Value = CboTipoMatricula.Text
        param(2).Size = 50

        param(3) = New ADODB.Parameter
        param(3).Name = "@Vigencia"
        param(3).Type = ADODB.DataTypeEnum.adDate
        param(3).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(3).Value = CDate(txtVigencia.Text)
        'param(2).Size = 50



        param(4) = New ADODB.Parameter
        param(4).Name = "@EstadoMatricula"
        param(4).Type = ADODB.DataTypeEnum.adVarChar
        param(4).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(4).Value = cboEstado.Text
        param(4).Size = 50


        param(5) = New ADODB.Parameter
        param(5).Name = "@Observacion"
        param(5).Type = ADODB.DataTypeEnum.adVarChar
        param(5).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(5).Value = txtObservacion.Text
        param(5).Size = 8000


        param(6) = New ADODB.Parameter
        param(6).Name = "@tipoEspecialidad"
        param(6).Type = ADODB.DataTypeEnum.adVarChar
        param(6).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(6).Value = CboTipoEspecialidad.Text
        param(6).Size = 50

        param(7) = New ADODB.Parameter
        param(7).Name = "@Especialidad"
        param(7).Type = ADODB.DataTypeEnum.adVarChar
        param(7).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(7).Value = cboEspecialidad.Text
        param(7).Size = 50




        RealizaModificacion = Datos.Modificar("ModificaMatricula", param, " RealizaModificacion de modificacion  de profesionales")





    End Function


    Private Sub EventoBuscar()

        Dim Rs As ADODB.Recordset
        Dim param(0) As ADODB.Parameter

        '----------inicializa---
        lBLresultado.Text = ""
        lBLresultado.Visible = False

        OcultayLimpiaCuadroDecarga()

        LblDniOculto.Text = ""
        lblPersona.Text = ""
        '--------------------------



        ''valido el Dni a buscar ''
        If TxtDniABuscar.Text = "" Then
            muestraMensaje_lbl("Falta dni para poder realizar la busqueda")
            Exit Sub
        Else
            If FG.ValCampoNumericos(TxtDniABuscar.Text) = False Then
                muestraMensaje_lbl("Solo se admiten numeros en el campo Dni")
                Exit Sub
            End If
        End If
        '-----------------------------




        param(0) = New ADODB.Parameter
        param(0).Name = "@Dni"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = TxtDniABuscar.Text
        param(0).Size = 10



        '''''busco el nombre y el apellido'''
        Rs = Datos.TraerTodos("traeApellidoYNombrePorDni", param, "alta de profesionales de ImageButton1_Click ")
        If Rs.RecordCount > 0 Then
            Rs.MoveFirst()

            LblDniOculto.Text = TxtDniABuscar.Text
            lblPersona.Text = Rs.Fields(0).Value.ToString

        Else
            muestraMensaje_lbl("La persona no existe")
            Exit Sub
        End If
        ''''''''''''''''''''


        'aca busco los datos de la matricula q tenga''
        Rs = Datos.TraerTodos("traeDatosdeMaticuladoXdni", param, " alta de profesionales de ImageButton1_Click ")

        'Muestro el panel para cargar los datos --
        P_cargaDatos.Visible = True


        gv_DatosDelaPersona.DataSource = FG.cargaUnDataTable(Rs)
        gv_DatosDelaPersona.DataBind()
        '''''''''''''''''''''


    End Sub

    Private Function ValidaExistenciaDeLaMatriculaEnOtraPersona(ByVal Matricula As String, ByVal Dni As String) As Boolean

        Dim Rs As ADODB.Recordset
        Dim param(1) As ADODB.Parameter


        param(0) = New ADODB.Parameter
        param(0).Name = "@Matricula"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = Matricula
        param(0).Size = 50


        param(1) = New ADODB.Parameter
        param(1).Name = "@Dni"
        param(1).Type = ADODB.DataTypeEnum.adVarChar
        param(1).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(1).Value = Matricula
        param(1).Size = 50


        Rs = Datos.TraerTodos("BuscaSIExisteunaMatriculaparaOtraPersona", param, "ValidaExistenciaDeLaMatricula")

        If Rs.RecordCount = 0 Then
            MsgBox("LA APLICACION NO PUDO constar la existencia de una matricula", MsgBoxStyle.Critical, "ERROR")
            ValidaExistenciaDeLaMatriculaEnOtraPersona = False
            Exit Function
        End If


        ValidaExistenciaDeLaMatriculaEnOtraPersona = CBool(Rs.Fields(0).Value)



    End Function

    Private Sub OcultaMsjeDeGuardar()
        LblMsjeAlGuardar.Text = ""
        LblMsjeAlGuardar.Visible = False

    End Sub

    Private Sub Muestra_MejeAl_Guardar(ByVal MsjeAmostrar As String)

        LblMsjeAlGuardar.Text = MsjeAmostrar
        LblMsjeAlGuardar.Visible = True


    End Sub


    Private Sub muestraMensaje_lbl(ByVal Msje As String)

        lBLresultado.Text = Msje
        lBLresultado.Visible = True

    End Sub

    Private Sub ocultaYlimpiaPanelDeModificacion()


        TxtnumMAtricula.Text = ""
        txtVigencia.Text = ""

        txtObservacion.Text = ""


        LblMsjeAlGuardar.Text = ""
        LblMsjeAlGuardar.Visible = False


    End Sub




    Private Sub OcultayLimpiaCuadroDecarga()



        'esta es la parte donde se va a modificar se van a poder modificar los datos
        ocultaYlimpiaPanelDeModificacion()


        'oculto el paner para modificar 
        P_elemtSeleccionado.Visible = False


        ''limpio la grilla 
        gv_DatosDelaPersona.DataBind()

        P_cargaDatos.Visible = False





    End Sub



    Private Sub inicilizoCombos()



        FG.CargaCombo("traerTipoMatricula", CboTipoMatricula)
        FG.CargaCombo("traeTipoDeEspecialidad", CboTipoEspecialidad)
        FG.CargaCombo("TraeEspecialidadxTipo", cboEspecialidad, CboTipoEspecialidad.Text)
        FG.CargaCombo("traeEstadosDeMatricula", cboEstado)




    End Sub
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load



        If Not Page.IsPostBack Then
            FG.culturaPaginas()

            '--cargo los combos 
            inicilizoCombos()


            '-'---donde se pone la matricula-
            OcultayLimpiaCuadroDecarga()


            'Cargo páginas anterior y actual!!!
            Var_Globales.Setea_paginas("Modificar_Profesional.aspx")


        End If

    End Sub


    Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click

        'pongo todo dentro del procedimiento sub para buscar cuando termino de 
        ' cargar
        EventoBuscar()



    End Sub

    Protected Sub CboTipoEspecialidad_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles CboTipoEspecialidad.SelectedIndexChanged

        FG.CargaCombo("TraeEspecialidadxTipo", cboEspecialidad, CboTipoEspecialidad.Text)

    End Sub

    Protected Sub CmdConfeccionar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CmdConfeccionar.Click


        OcultaMsjeDeGuardar()


        '-----------validaciones------------
        If TxtnumMAtricula.Text = "" Then
            Muestra_MejeAl_Guardar("Falta numero de matricula")
            Exit Sub
        End If

        If txtVigencia.Text = "" Then
            Muestra_MejeAl_Guardar("Falta la fecha de vigencia de la matricula")
            Exit Sub
        Else
            If IsDate(txtVigencia.Text) = False Then
                Muestra_MejeAl_Guardar("Formato invalido en la fecha de vigencia de la matricula")
                Exit Sub
            End If

        End If



        ' me fijo q la matricul no este cargada 
        ' If gv_DatosDelaPersona.Rows.Count > 0 Then
        'For I = 1 To gv_DatosDelaPersona.Rows.Count
        'If UCase(gv_DatosDelaPersona.Rows(I - 1).Cells(1).Text) = UCase(TxtnumMAtricula.Text) Then
        '    Muestra_MejeAl_Guardar("la matricula ya se encuentra en la lista")
        '   Exit Sub
        'End If
        'Next I
        'End If
        '-------------------------------------------


        '--------------------------------------------
        If ValidaExistenciaDeLaMatriculaEnOtraPersona(TxtnumMAtricula.Text, LblDniOculto.Text) = True Then
            Muestra_MejeAl_Guardar("La matricula ya se encuentra cargada a otra persona")
            Exit Sub
        End If
        '--------------------------------------



        'valido si la fecha de vigencia es menor a  la actual, cambio de la matricula
        'a vencida

        If CDate(txtVigencia.Text) < Date.Today And UCase(cboEstado.Text) <> UCase("Vencida") Then
            MsgBox("La fecha de vigencia es menor a la actual por lo que estado de la matricula ha cambiado a vencido")
            cboEstado.Text = "Vencida"
        End If

        If cboEstado.Text = "Cancelada" And txtObservacion.Text = "" Then
            Muestra_MejeAl_Guardar("Falta observacion de por que se ha cancelado la matricula")
            Exit Sub
        End If



        If RealizaModificacion() = True Then  '-->''esta es la funcion que hace la carga 

            'realizo de nuevo la busqueda para generar el efecto de q se cargo
            TxtDniABuscar.Text = LblDniOculto.Text
            EventoBuscar()
            '''''''''''''''''

        Else
            MsgBox("Se produjo un error al guardar los datos", MsgBoxStyle.Critical, "ERROR")

        End If





    End Sub

    Protected Sub gv_DatosDelaPersona_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles gv_DatosDelaPersona.SelectedIndexChanged
        Dim row As GridViewRow = gv_DatosDelaPersona.SelectedRow

        ''limpio los textbox
        ocultaYlimpiaPanelDeModificacion()
        ''''''''''''''''''''


        'asigno los datos '''
        '--------------------------------------------------------

        '   'numMatriculaOculta (esto es por que si el tipo cambia la matricula ,, se va actualizar en este registro'
        lblMatriculaSeleccionada.Text = row.Cells(1).Text

        TxtnumMAtricula.Text = row.Cells(1).Text

        CboTipoMatricula.Text = row.Cells(3).Text

        txtVigencia.Text = row.Cells(6).Text

        '                       funcion que traeLa observacion de la matricula
        txtObservacion.Text = TraeObservacionDematricula(TxtnumMAtricula.Text)

        '                           funcion que tra el tipo de espec por la especialidad misma
        CboTipoEspecialidad.Text = (TraeTipoDeEspecialidadxEspec(row.Cells(2).Text))
        FG.CargaCombo("TraeEspecialidadxTipo", cboEspecialidad, CboTipoEspecialidad.Text)


        '
        cboEspecialidad.Text = row.Cells(2).Text

        'estado de la matricula
        cboEstado.Text = row.Cells(4).Text


        'muestro el panel con los datos seleccionadas
        P_elemtSeleccionado.Visible = True











    End Sub

    Protected Sub txtVigencia_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles txtVigencia.TextChanged

    End Sub
End Class